const gulp = require('gulp');// 引用gulp模块
const htmlmin = require('gulp-htmlmin');
const fileinclude = require('gulp-file-include');
const less = require('gulp-less');
const csso = require('gulp-csso');
const babel = require('gulp-babel');
const uglify = require('gulp-uglify');


// 使用gulp.task建立任务;参数1:任务名称;参数2:回调函数
gulp.task('first',()=>{
    console.log('第一个gulp任务');
    //1.作用gulp.src获取要处理的文件
    gulp.src('./src/css/index.css')
        .pipe(gulp.dest('dist/css'));
});
//html任务
gulp.task('htmlmin',()=>{
    //获取src目录下所有htl文件
    gulp.src('./src/*.html')
    .pipe(fileinclude())//文件公共部分提示
    //压缩html文件中的代码
    .pipe(htmlmin({ collapseWhitespace: true }))
    .pipe(gulp.dest('dist'));
});
//css任务
gulp.task('cssmin',()=>{    
    gulp.src(['./src/css/*.less','./src/css/*.css'])
        .pipe(less())//转换less语法
        .pipe(csso())//压缩代码
        .pipe(gulp.dest('dist/css'));
});
//js任务,es6代码转换,代码压缩
gulp.task('jsmin',()=>{    
    gulp.src('./src/js/*.js')
        .pipe(babel({
            //它要以判断当前代码的运行环境将代码转换为当前运行环境 所支持的代码
            presets: ['@babel/env']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('dist/js'));
});
//复制文件夹
gulp.task('copy',()=>{    
    gulp.src('./src/images/*')      
        .pipe(gulp.dest('dist/images'));
    gulp.src('./src/lib/*')
        .pipe(gulp.dest('dist/lib'));
});
//构建任务
gulp.task('default', gulp.series('htmlmin', 'cssmin', 'jsmin', 'copy'));
